import {createSSRApp} from 'vue';
import App from './App.vue';
import {createPinia} from 'pinia';
import {sendError} from "@/utils/errorHandler";

export function createApp() {
  const app = createSSRApp(App);
  app.use(createPinia());

  // Vue错误
  app.config.errorHandler = (err: Error, vm, info) => {
    console.error('Vue Error:', err, info)
    void sendError(err, 'vue')
  }

  // 平台特定处理
  if (typeof window !== 'undefined') {
    // H5 环境
    window.addEventListener('unhandledrejection', (event) => {
      void sendError(event.reason, 'promise');
    });
  }
  if (typeof uni !== 'undefined') {
    // 小程序/App 环境
    uni.onError(async function (error) {
      console.error('Global Error:', error)
      void sendError(new Error(error), 'mini-program')
    });
    // 未处理的Promise rejection
    uni.onUnhandledRejection((event) => {
      void sendError(new Error(event.reason), 'promise');
    });
  }
  return {
    app
  };
}
